package com;

import javax.faces.bean.ManagedBean;
import javax.enterprise.context.SessionScoped;
import org.jasypt.util.text.*;
import java.sql.*;
import javax.sql.DataSource;
import javax.annotation.Resource;
import com.br.util.FonteConexoes;

@ManagedBean(name="autenticarTabulador")
@SessionScoped
public class AutenticarTabuladorBean
{
    public static final String erro_conexao = "0";

    public static final String erro_login = "1";

    public static final String erro_interno = "2";

    public static final String sucesso = "3";
    
    public static final String interrompida = "4";
    
    String email;
    
    String senha;
    
    // ACESSO AO BANCO DE DADOS. FUTURAMENTE, RETIRAR DESSA CLASSE.
    @Resource(name="jdbc/hermesweb") private DataSource dataSource;

    public String getEmail()
    {
        return email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    public String getSenha()
    {
        return senha;
    }

    public void setSenha(String senha)
    {
        this.senha = senha;
    }
    
    public String verificarTabulador()
    {
        String senhaCriptografia = "hermesweb031011";
        int idTabulador;
        
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        textEncryptor.setPassword(senhaCriptografia);
        
        String emailDescripto = textEncryptor.decrypt(email);
        String senhaDescripto = textEncryptor.decrypt(senha);
        
        try
        {
            Connection conexao = null;
            conexao = new FonteConexoes().getConnection();
            
            String sqlAutenticarTabulador = "SELECT " +
                                       "id_usua " +
                                       "FROM " +
                                       "usuarios " +
                                       "WHERE " +
                                       "STRCMP(?, usuarios.email_usua) = 0 AND " +
                                       "STRCMP(?, usuarios.senha_usua) = 0";
        
            PreparedStatement prepStmt = conexao.prepareStatement(sqlAutenticarTabulador);
            prepStmt.setString(1, emailDescripto);
            prepStmt.setString(2, senhaDescripto);

            ResultSet rsTabulador = prepStmt.executeQuery();

            if (rsTabulador.next())
            {
                // login do tabulador efetuado com sucesso; armazenamos seu id
                idTabulador = rsTabulador.getInt("id_usua");
            }
            else
            {
                return erro_login;
            }
            
        } catch(Exception e)
        {
            return erro_interno;
        }
        
        return sucesso + " " + String.valueOf(idTabulador);
    }
}
